package pool

import (
	"bytes"
	"sync"
)

// bytesBufferPool 定义 *bytes.Buffer 复用池的类型
type bytesBufferPool sync.Pool

func NewBytesBufferPool() *bytesBufferPool {
	return &bytesBufferPool{
		New: func() any { return new(bytes.Buffer) },
	}
}

// Alloc 分配一个 *bytes.Buffer 对象
func (own *bytesBufferPool) Alloc() *bytes.Buffer {
	return (*sync.Pool)(own).Get().(*bytes.Buffer)
}

// Dealloc 释放当前 *bytes.Buffer 对象
func (own *bytesBufferPool) Dealloc(obj *bytes.Buffer) {
	obj.Reset()
	(*sync.Pool)(own).Put(obj)
}
